using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("BoardEvents")]
	public class BoardEvents : MonoBehaviour
	{
		public enum EVENT_TYPE
		{
			FriendlyHeroDamage,
			OpponentHeroDamage,
			FriendlyHeroHeal,
			OpponentHeroHeal,
			FriendlyLegendaryMinionSpawn,
			OpponentLegendaryMinionSpawn,
			FriendlyLegendaryMinionDeath,
			OpponentLegendaryMinionDeath,
			FriendlyMinionSpawn,
			OpponentMinionSpawn,
			FriendlyMinionDeath,
			OpponentMinionDeath,
			FriendlyMinionDamage,
			OpponentMinionDamage,
			FriendlyMinionHeal,
			OpponentMinionHeal,
			LargeMinionShake
		}

		[Attribute38("BoardEvents.EventData")]
		public class EventData : MonoClass
		{
			public EVENT_TYPE m_eventType => method_2<EVENT_TYPE>("m_eventType");

			public float m_timeStamp => method_2<float>("m_timeStamp");

			public Card m_card => method_3<Card>("m_card");

			public float m_value => method_2<float>("m_value");

			public TAG_RARITY m_rarity => method_2<TAG_RARITY>("m_rarity");

			public EventData(IntPtr address, string className)
				: base(address, className)
			{
			}

			public EventData(IntPtr address)
				: this(address, "EventData")
			{
			}
		}

		[Attribute38("BoardEvents.EventCallback")]
		public class EventCallback : MonoClass
		{
			public float minimumWeight => method_2<float>("minimumWeight");

			public EventCallback(IntPtr address, string className)
				: base(address, className)
			{
			}

			public EventCallback(IntPtr address)
				: this(address, "EventCallback")
			{
			}
		}

		public static float AI_PROCESS_INTERVAL => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "BoardEvents", "AI_PROCESS_INTERVAL");

		public static float PROCESS_INTERVAL => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "BoardEvents", "PROCESS_INTERVAL");

		public static float FAST_PROCESS_INTERVAL => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "BoardEvents", "FAST_PROCESS_INTERVAL");

		public float m_nextProcessTime => method_2<float>("m_nextProcessTime");

		public float m_nextFastProcessTime => method_2<float>("m_nextFastProcessTime");

		public Dictionary<EVENT_TYPE, float> m_weights => method_3<Class252<EVENT_TYPE, float>>("m_weights")?.method_25();

		public List<EventCallback> m_friendlyHeroDamageCallacks => method_3<Class271<EventCallback>>("m_friendlyHeroDamageCallacks")?.method_25();

		public List<EventCallback> m_opponentHeroDamageCallacks => method_3<Class271<EventCallback>>("m_opponentHeroDamageCallacks")?.method_25();

		public List<EventCallback> m_opponentMinionDamageCallacks => method_3<Class271<EventCallback>>("m_opponentMinionDamageCallacks")?.method_25();

		public List<EventCallback> m_friendlyMinionDamageCallacks => method_3<Class271<EventCallback>>("m_friendlyMinionDamageCallacks")?.method_25();

		public List<EventCallback> m_friendlyHeroHealCallbacks => method_3<Class271<EventCallback>>("m_friendlyHeroHealCallbacks")?.method_25();

		public List<EventCallback> m_opponentHeroHealCallbacks => method_3<Class271<EventCallback>>("m_opponentHeroHealCallbacks")?.method_25();

		public List<EventCallback> m_friendlyMinionHealCallbacks => method_3<Class271<EventCallback>>("m_friendlyMinionHealCallbacks")?.method_25();

		public List<EventCallback> m_opponentMinionHealCallbacks => method_3<Class271<EventCallback>>("m_opponentMinionHealCallbacks")?.method_25();

		public List<EventCallback> m_frindlyLegendaryMinionSpawnCallbacks => method_3<Class271<EventCallback>>("m_frindlyLegendaryMinionSpawnCallbacks")?.method_25();

		public List<EventCallback> m_opponentLegendaryMinionSpawnCallbacks => method_3<Class271<EventCallback>>("m_opponentLegendaryMinionSpawnCallbacks")?.method_25();

		public List<EventCallback> m_frindlyMinionSpawnCallbacks => method_3<Class271<EventCallback>>("m_frindlyMinionSpawnCallbacks")?.method_25();

		public List<EventCallback> m_opponentMinionSpawnCallbacks => method_3<Class271<EventCallback>>("m_opponentMinionSpawnCallbacks")?.method_25();

		public List<EventCallback> m_frindlyLegendaryMinionDeathCallbacks => method_3<Class271<EventCallback>>("m_frindlyLegendaryMinionDeathCallbacks")?.method_25();

		public List<EventCallback> m_opponentLegendaryMinionDeathCallbacks => method_3<Class271<EventCallback>>("m_opponentLegendaryMinionDeathCallbacks")?.method_25();

		public List<EventCallback> m_frindlyMinionDeathCallbacks => method_3<Class271<EventCallback>>("m_frindlyMinionDeathCallbacks")?.method_25();

		public List<EventCallback> m_opponentMinionDeathCallbacks => method_3<Class271<EventCallback>>("m_opponentMinionDeathCallbacks")?.method_25();

		public BoardEvents(IntPtr address, string className)
			: base(address, className)
		{
		}

		public BoardEvents(IntPtr address)
			: this(address, "BoardEvents")
		{
		}

		public static BoardEvents Get()
		{
			return MonoClass.smethod_15<BoardEvents>(TritonHs.MainAssemblyPath, "", "BoardEvents", "Get", Array.Empty<object>());
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void Start()
		{
			method_8("Start");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void OnDestroy()
		{
			method_8("OnDestroy");
		}

		public void MinionShakeEvent(ShakeMinionIntensity shakeIntensity, float customIntensity)
		{
			method_8("MinionShakeEvent", shakeIntensity, customIntensity);
		}

		public void DamageEvent(Card targetCard, float damage)
		{
			method_8("DamageEvent", targetCard, damage);
		}

		public void HealEvent(Card targetCard, float health)
		{
			method_8("HealEvent", targetCard, health);
		}

		public void SummonedEvent(Card minionCard)
		{
			method_8("SummonedEvent", minionCard);
		}

		public void DeathEvent(Card card)
		{
			method_8("DeathEvent", card);
		}

		public void ProcessImmediateEvents()
		{
			method_8("ProcessImmediateEvents");
		}

		public void ProcessEvents()
		{
			method_8("ProcessEvents");
		}

		public void LargeShakeEvent()
		{
			method_8("LargeShakeEvent");
		}

		public void AddWeight(EVENT_TYPE eventType, float weight)
		{
			method_8("AddWeight", eventType, weight);
		}
	}
}
